package com.ayz.gateway.common.constants;

import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @ClassName MethodData
 * @Description TODO: Api接口中的方法的元数据信息
 * @Author 快乐的星球
 * @Date 2023/5/12 22:49
 * @Version 1.0
 **/
@Data
public class MethodData implements Serializable {
    /**
     * HTTP资源的路径
     */
    private String uri;
    /**
     * 方法的名称
     */
    private String methodName;
    /**
     * 当前方法交由网关代理访问时,是否需要鉴权
     */
    private boolean isAuth;
    /**
     * 注意目前只支持方法中只有一个参数
     * 要么是基础数据类型,要么是一个对象
     */
    private String parameterTypeName;




    public MethodData() {
    }

    public MethodData(String uri, String methodName, boolean isAuth, String parameterTypeName) {
        this.uri = uri;
        this.methodName = methodName;
        this.isAuth = isAuth;
        this.parameterTypeName = parameterTypeName;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MethodData that = (MethodData) o;
        return getUri().equals(that.getUri()) && getMethodName().equals(that.getMethodName()) && getParameterTypeName().equals(that.getParameterTypeName());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getUri(), getMethodName(), getParameterTypeName());
    }
}
